<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>
    /* function Person (name, age, sex) {
      this.name = name 
      this.age = age
      this.sex = sex
    }  

    Person.prototype.eat = function () {
      console.log('吃饭')
    }
    
    var p = new Person()
    console.log(p.constructor) */

    /* 
      ES6之前面向对象写法没有规范的标准，而且属性和方法会分开在不同的位置

      ES6之后提出了类的概念，不仅仅简化了封装过程，而且还简化了继承过程

      class只是关于构造函数创建对象的一种语法糖
    
    */
// <!-- 
//     class Person {
//       // 类中的属性需要写在构造函数中
//       constructor (name, age, sex) {
//         // 在new类时会自动调用的函数
//         this.name = name 
//         this.age = age
//         this.sex = sex
//       }

//       // 方法直接写在类中 这个方法会自动到对应的原型对象中（节省内存）
//       eat () {
//         console.log('吃饭')
//       }
//     }


//     class Student extends Person {
//       constructor (name, age, sex, sid) {
//         super(name, age, sex) // 继承父类中的属性
//         this.sid = sid
//       }

//       study () {
//         console.log('学习')
//       }
//     }

//     // 根据类我们可以直接new出来对象 括号中所写的参数就是contructor中的参数
//     const p = new Person('张三', 18, '男')

//     const s = new Student('李四', 18, '男', 1) -->


    class School{
      constructor (name,size,old){
        this.name=name,
        this.size=size,
        this.old=old
      }
      ming(){
        console,log('名次')
      }
    }
    class students extends School{
        constructor(name,size,old,sid){
          super(name,size,old)
          this.sid=sid
        }
       Study(){
         console.log('学习')
       }
    }
    const b =new School('正科',12232,40)
    const m =new students('zhangsan',22,23,2)
  </script>
</body>
</html>